When you place something you trigger four (relevant to your question) events: beforeImport, afterImport, beforePlace, afterPlace. When you consider the Place Gun (i.e. the loaded cursor you get when you manually place a file) the meanings are these: beforeImport: ID ist about to load the place gun afterImport: ID has loaded the place gun beforePlace: the user has clicked with a loaded place gun afterPlace: ID has placed the file at the location of the click Problem: Unless you create links for text files the beforeImport/afterImport event does not know what it is that its importing. (Someone please correct me if this is wrong). The only solution I can currently think of would be to hook into the call of the menu item "Place" with MenuAction.afterInvoke and handle the file-selection etc yourself. FWIW, here is a snippet that installs most of InDesign's event listeners to help you see, when what happens. //EventListenersOn.jsx
//An InDesign CS5 JavaScript
//
//Installs event listeners for many supported events; displays a
//message when each event occurs.
#targetengine "session"
main();
function main(){
mySetup();
mySnippet();
myTeardown();
}
function mySetup(){
}
function mySnippet(){
var myEventNames = [
"beforeQuit", "afterQuit",
"beforeNew", "afterNew",
"beforeOpen", "afterOpen",
"beforeClose", "afterClose",
"beforeSave", "afterSave",
"beforeSaveAs", "afterSaveAs",
"beforeSaveACopy", "afterSaveACopy",
"beforeRevert", "afterRevert",
"beforePrint", "afterPrint",
"beforeExport", "afterExport",
"beforeImport", "afterImport",
"afterContextChanged",
"afterDelete", "beforeDelete",
"beforeDisplay",
"afterEmbed", "beforeEmbed",
"afterInvoke", "beforeInvoke",
"afterLinksChanged",
"afterMove", "beforeMove",
"afterPlace", "beforePlace",
/* "afterSelectionAttributeChanged",
"afterSelectionChanged", */
"afterUnembed", "beforeUnembed",
"afterUpdate", "beforeUpdate"
] ;
for (var myCounter = 0; myCounter < myEventNames.length; myCounter ++){
app.activeDocument.addEventListener(myEventNames[myCounter], myEventInfo);
}
}
function myTeardown(){
}
function myEventInfo(myEvent){
try{
var myString = "Application Event: " +myEvent.eventType;
myString += "\r\rTarget: " + myEvent.target.constructor.name + ", " +myEvent.target.name;
myString += "\rCurrent: " +myEvent.currentTarget.constructor.name + ", " + myEvent.currentTarget.name;
myString += "\r\rPhase: " + myGetPhaseName(myEvent.eventPhase );
myString += "\rBubbles: " + myEvent.bubbles;
myString += "\r\rCancelable: " +myEvent.cancelable;
myString += "\rStopped: " +myEvent.propagationStopped;
myString += "\rCanceled: " +myEvent.defaultPrevented;
myString += "\r\rTime: " +myEvent.timeStamp;
alert(myString);
function myGetPhaseName(myPhase){
switch(myPhase){
case EventPhases.atTarget:
myPhaseName = "At Target";
break;
case EventPhases.bubblingPhase:
myPhaseName = "Bubbling";
break;
case EventPhases.done:
myPhaseName = "Done";
break;
case EventPhases.notDispatching:
myPhaseName = "Not Dispatching";
break;
default:
myPhaseName = "no phase defined";
}
return myPhaseName;
}
}
catch(myError){
alert("Error getting event properties.");
}
}
... View more